字节三面过了!
大家好,我是小林。
一面 1h5min
项目?缓存一致?为什么更新?本地是广播消费?消费失败怎么办(重试,还不行就数据库兜底重发,然后人工干预)?缓存预热?缓存数据有多少?能存多少?
优化:拆分服务后本地缓存分批存?不同服务对应存不同本地缓存?消费失败可以不用兜底?
mq的作用?幂等和防止重复?消息丢失怎么解决?
get、put、post区别?哪个是幂等的? 幂等详解?
http不同版本区别?要说到QUIC的握手时机不同
QUCI发送过程?(很底层,包括重复发送那一块)
内存淘汰策略?缓存数据过热?数据结构?
隔离级别怎么保证可重复读?mvcc和间隙锁
索引区别?innodb解决幻读?
hashmap线程不安全在哪里?1.8hash为什么高效?
锁升级?很细?可重入锁源码(status?)?公平锁非公平锁源码区别?对象头结构详细?.
synchronized 和lock区别?synchronized 怎么加锁的底层?monitor对象?两个队列?非公平竞争?
volatile?MESI?为什么MESI还要volatile?(语言层面volatile,lock前缀?系统层面MESI,JMM模型映射,内存屏障,总线风暴?提一下MESI优化的那两个队列所有要用内存屏障进一步保证)
算法说思路:整数数据取中位数(我说数据量不大就排序根据奇偶取中间?优化可以排序到中间就判断,不用全排序?骚操作可以放redis里?)没有刁难我
二面 1h
项目陈述?
为什么canal?canal解耦,懒加载,自带的顺序发送?为什么保证更新顺序这里不可以用mq消息版本?
canal是单独节点部署的么?
可不可以不用mq?各个本地节点都载入canal?k8s sidecar挂载?
mq可靠性?从发送到持久化到广播消费(定时任务(第三方控制速率) + 查库 ,优化 延迟消息 这里可以argue)
本地缓存优化?缓存预热?为什么更新?最终一致?
重复消费那里?顺便说一嘴弱校验
算法:一个数组和一个K,数组A{1,1,1,0,0,1,1,0},K=2,能让最多K个0变为1,问连续1最大是多少?滑动窗口
多嘴说了OS伪共享,秀了一下os,说Java的并发框架有用字节填充来实现Cacheline填充
总结,项目这里漏说了分布式锁,但是这些已经说了四十分钟了,最后就做题了
三面1h15min
有没有别的offer?
成绩怎么样?为什么不考研?
说下项目?
工作流怎么设计?原来是怎么样的?提供外部系统是怎样的?优化业务嵌入数据是咋样的?
缓存存什么?数据结构是怎么样的?缓存大小,大小优化?怎么高可用?
缓存预热是咋样的?spring启动怎么保证的?数据启动前不会被写入?
分布式锁?原子性,过期时间,单点,红锁,npc
进程间通信?源码分析?管道实现?
mysql怎么回滚的?
redo,undo,bufferpool,宕机时候的两阶段判断
数据包发送,mac,arp,子网,路由转发,ringbuffer,数据拷贝
线程交替输出
多线程每秒1000次访问,超过则false,没超过返回true
反问:
canal k8s部署sidecar的看法 说综合考虑人力和业务,没有最好的方案